package br.com.rglariguet.pioneer.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import br.com.rglariguet.pioneer.filtropesquisa.FiltroPedidoPeca;
import br.com.rglariguet.pioneer.modelos.PedidoPeca;

@Repository
@Transactional
public class PedidoPecaDAO extends DaoGenerico<PedidoPeca> {

	
public List<PedidoPeca> listarComFiltro(FiltroPedidoPeca filtro) {
		
		StringBuilder sql = new StringBuilder();
		Map<String, Object> parametros = new HashMap<String, Object>();
		
		sql.append("from PedidoPeca as pedido ");
		sql.append("where 0 = 0 and ");
		if (filtro.getDataPedidoDe() != null) {
			sql.append("pedido.dataDoPedido >= :dataDoPedidoDe and ");	
			parametros.put("dataDoPedidoDe", filtro.getDataPedidoDe());
		}
		if (filtro.getDataPedidoAte() != null) {
			sql.append("pedido.dataDoPedido =< :dataDoPedidoAte and ");	
			parametros.put("dataDoPedidoAte", filtro.getDataPedidoAte());
		}
	
		
		sql.append("0 = 0 ");
		sql.append("group by pecas");
		
		
		
		Query query = getSession().createQuery(sql.toString());
		
		for (Map.Entry<String, Object> paramentro : parametros.entrySet()) {
			if (paramentro.getValue().getClass().toString().contains("String")) {
				query.setParameter(paramentro.getKey(), "%"+paramentro.getValue()+"%");
			}else{
				query.setParameter(paramentro.getKey(), paramentro.getValue());
			}
		}
		
		return (List<PedidoPeca>) query.list();
	}
	
}
